package cxydmmszl.chapter05.t087;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * <li style="color: red;">Prob</li>
 * 数组中两个字符串的最小距离
 * <li style="color: green;">Desc</li>
 * 给定一个字符串数组 strs，再给定两个字符串 str1 和 str2，
 * 返回在 strs 中 str1 和 str2 的最小距离，如果 str1 或 str2 为 null ，或不在 strs 中，返回 -1。
 * <li style="color: green;">Input</li>
 *
 * <li style="color: green;">Output</li>
 * 输出一行，包含一个整数，代表返回的值。
 * <li style="color: blue;">Link</li> CD122
 *
 * @author habitplus
 * @since 2021-09-09 21:54
 */
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br =
                new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        String[] ss = br.readLine().split(" ");
        String[] strs = new String[n];
        for (int i = 0; i < n; i++) {
            strs[i] = br.readLine();
        }
        br.close();

        int ans = minDistance(strs, ss[0], ss[1]);
        System.out.println(ans);
    }

    private static int minDistance(String[] strs, String s1, String s2) {
        if (strs == null || strs.length == 0 || s1 == null || s2 == null) return -1;

        int n = strs.length;
        // 记录前一个 s1 出现的位置
        int pre1 = -1;
        // 记录前一个 s2 出现的位置
        int pre2 = -1;
        int min = Integer.MAX_VALUE;

        for (int i = 0; i < n; i++) {
            if (s1.equals(strs[i])) {
                min = Math.min(min, pre2 == -1 ? min : i - pre2);
                pre1 = i;
            }

            if (s2.equals(strs[i])) {
                min = Math.min(min, pre1 == -1 ? min : i - pre1);
                pre2 = i;
            }
        }

        return min == Integer.MAX_VALUE ? -1 : min;
    }
}
